package fr.miage.course7.gps;

import java.io.IOException;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * Classe gerant les connexions entrantes.
 * @author Jonathan LAMOTTE
 *
 */
public class AccepterConnexion implements Runnable {

    /**
     * Socket du serveur.
     */
    private ServerSocket socketserver = null;

    /**
     * Socket de communication avec le client.
     */
    private Socket socket = null;

    /**
     * Thread de reception des messages.
     */
    private Thread t;

    /**
     * Pointeur sur la classe appelante.
     */
    private Serveur serveur;

    /**
     * Constructeur.
     * @param ss : socket serveur
     * @param serv : classe appelante
     */
    public AccepterConnexion(final ServerSocket ss, final Serveur serv) {
     socketserver = ss;
     this.serveur = serv;
    }

    /**
     * Surcharge de la méthode run().
     */
    public final void run() {

        Communication client;

        try {
            while (true) {

            socket = socketserver.accept();
            System.out.println("Un nouveau client arrive");

            client = new Communication(socket, serveur);

            serveur.ajoutClient(client);

            t = new Thread(client);
            t.start();

            }
        } catch (IOException e) {

            System.err.println("Erreur serveur");
        }

    }
}
